package br.com.caelum.vraptor.controller;


import java.util.List;

import javax.inject.Inject;

import br.com.caelum.vraptor.Controller;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.anotations.Restrito;
import br.com.caelum.vraptor.componentes.FuncionarioOn;
import br.com.caelum.vraptor.dao.EstudanteDAO;
import br.com.caelum.vraptor.dao.FormularioDAO;
import br.com.caelum.vraptor.dao.FuncionarioDAO;
import br.com.caelum.vraptor.dao.TurmaDAO;
import br.com.caelum.vraptor.entidades.Estudante;
import br.com.caelum.vraptor.entidades.Formulario;
import br.com.caelum.vraptor.entidades.Funcionario;
import br.com.caelum.vraptor.entidades.Turma;


@Controller
public class CarteirasController {
	@Inject
	private FuncionarioDAO funcionarioDao;
	@Inject
	private FormularioDAO formdao;
	@Inject
	private Result result;
	@Inject
	private EstudanteDAO estudanteDao;
	@Inject
	private TurmaDAO turmaDao;
	@Inject
	private FuncionarioOn currentFuncionario;
	public void home(){

	}
	public void logar(String nome, String senha){
		Funcionario func = funcionarioDao.find(nome, senha);
		currentFuncionario.login(func);
		if(currentFuncionario.logado()){
			result.redirectTo(this).home();
		}
		else{
			result.redirectTo(this).login();}
	}
	public void login(){

	}
    @Restrito
	public void novoformulario(){

	}
    @Restrito
	public void salvarform(Formulario formulario, Estudante estudante, Turma turma){
		turmaDao.save(turma);
		estudante.setTurma(turma);
		estudanteDao.save(estudante);
		formulario.setEstudante(estudante);
		formdao.save(formulario);
		result.redirectTo(this).home();
	}
    @Restrito
	public List<Formulario> lista(){
		return formdao.find();
	}
	public void suacarteira(){

	}
	public void search(int ncontrole){
		Formulario aux = formdao.find(ncontrole);
		if(aux==null){result.redirectTo(this).error();}
		result.include("formulario",aux);
	}
	/**
	 * Fazer o metodo edit..
	 */
	public void error(){}
	@Restrito
	public void delete(int ncontrole){
		Formulario form = formdao.find(ncontrole);
		Estudante est = form.getEstudante();
		estudanteDao.delete(est);
		formdao.delete(form);
		result.redirectTo(this).suacarteira();
	}
	@Restrito
	public Formulario editar(int ncontrole){
		Formulario form = formdao.find(ncontrole);
		return form;
	}
}
